/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import model.Usuario;
import model.Viaje;
import model.Participante;
import model.Voto;
import java.util.List;
import model.Itinerario;
import model.Lugar;
import model.SugerenciaViaje;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import service.ComentarioService;
import service.ItinerarioService;
import service.UsuarioService;
import service.LugarService;
import service.SugerenciaService;
import service.ViajeService;
import service.ParticipanteService;
import service.VotoService;

/**
 *
 * @author Geral Zerpa Mora
 * @author Fatima Pestana
 *
 */
public class ResultadoVotos extends AbstractCommandController {

        private UsuarioService usuarioService;
        private ViajeService viajeService;
        private SugerenciaService sugerenciaService;
        private LugarService lugarService;
        private VotoService votoService;
        private ItinerarioService itinerarioService;
        private static Logger loggers = null;

    public void setViajeService(ViajeService viajeService) {
        this.viajeService = viajeService;
    }

    public void setLugarService(LugarService lugarService) {
        this.lugarService = lugarService;
    }

    public void setSugerenciaService(SugerenciaService sugerenciaService) {
        this.sugerenciaService = sugerenciaService;
    }

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    public void setItinerarioService(ItinerarioService itinerarioService) {
        this.itinerarioService = itinerarioService;
    }

     public void setVotoService(VotoService votoService) {
        this.votoService = votoService;
    }

    public ResultadoVotos() {
        this.setCommandClass(Usuario.class);
    }

    @Override
     protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object form, BindException errors) throws Exception {
         Map model = new HashMap();
        Usuario user2;
        Viaje via;
        user2 = (Usuario) usuarioService.getUsuario(Long.parseLong(request.getParameter("ux")));
        via = (Viaje) viajeService.getViaje(Long.parseLong(request.getParameter("mv")));
        Lugar lug;
        lug = (Lugar) lugarService.getLugar(via.getLugar().getIdLugar());
        List itin;
        itin = itinerarioService.getListaItinerario(Long.parseLong(request.getParameter("mv")));
        if (itin.isEmpty()){
            Viaje nuevo = new Viaje(via.getIdViaje(),user2, lug, via.getNombre(), via.getSitioAlojamiento(), via.getFechaLlegada(), via.getFechaPartida(), via.getPrivilegio(),"ACTIVO");
            viajeService.saveViaje(nuevo);
            List resultados = new ArrayList();
            List lugar = new ArrayList();
            List opciones;
            opciones = sugerenciaService.getListaSugerencia(Long.parseLong(request.getParameter("mv")));
            for (int i = 0; i < opciones.size(); i++){
                List votos;
                SugerenciaViaje sviaje;
                sviaje = (SugerenciaViaje) opciones.get(i);
                votos = votoService.contVotoList(sviaje.getIdSugviaje());
                lugar.add(sviaje.getNombre());
                resultados.add(votos.get(0));
            }
            request.getSession().setAttribute("clienteList", null);
            model.put("usuario", user2);
            model.put("viaje", via);
            model.put("Resultado", resultados);
            model.put("LugarV", lugar);
            model.put("sugerencias",opciones);
            return new ModelAndView("OpcionesItinerario", model);
        }else{
            List ruta;
            List lugar = new ArrayList();
            List idIti = new ArrayList();
            ruta = itinerarioService.getListaItinerario(via.getIdViaje());
            for (int i = 0; i < ruta.size(); i++){
                SugerenciaViaje sviaje;
                Itinerario it;
                it = (Itinerario) ruta.get(i);
                sviaje = (SugerenciaViaje) sugerenciaService.getSugerenciaViaje(it.getSugerenciaViaje().getIdSugviaje());
                lugar.add(sviaje.getNombre());
                idIti.add(it.getIdIti());
            }
            request.getSession().setAttribute("clienteList", null);
            model.put("usuario", user2);
            model.put("viaje", via);
            model.put("idItinerario",idIti);
            model.put("LugarV",lugar);
            return new ModelAndView("VerItinerario", model);
        }

    }

}
